package org.mzyyn.qr.service.user;

import org.mzyyn.qr.dto.user.Code2sessionLoginDTO;
import org.mzyyn.qr.dto.user.UserProfileLoginDTO;
import org.mzyyn.qr.entity.UserPO;
import org.mzyyn.qr.vo.user.LoginUserInfoVO;
import org.mzyyn.qr.vo.user.LoginUserVO;

import java.util.Map;

/**
 * @author lipeng
 * @description 用户服务
 * @date 2024/9/3 9:40
 */
public interface UserService {
    /**
     * @descrition 查询用户信息 : uuid可能是手机号，有可能是wxopenid或者qqopenid
     * @author lipeng
     * @date 2024/1/12
     * @param phoneOrOpenid
     * @return com.sinochem.map.iot.uav.biz.entity.MemberPO
     */
    UserPO findByUser(String phoneOrOpenid);

    /**
     * @descrition 查询用户信息 : uuid
     * @author lipeng
     * @date 2024/1/12
     * @param uuid
     * @return com.sinochem.map.iot.uav.biz.entity.MemberPO
     */
    UserPO findByUserByUuid(String uuid);

    /**
     * @descrition 小程序通过code换取openid登录 : 如果注册了则登录成功。未注册则返回openid信息
     * @author lipeng
     * @date 2024/1/26
     * @param code2sessionLoginDTO
     * @return java.lang.Object
     */
    LoginUserInfoVO appletUnionidLogin(Code2sessionLoginDTO code2sessionLoginDTO);

    /**
     * 注册并登录
     * @param userProfileLoginDTO
     * @return
     */
    LoginUserInfoVO registerAndLogin(UserProfileLoginDTO userProfileLoginDTO);

    /**
     * 获取用户核心信息
     * @param mapKey
     * @return
     */
    String getUserCoreInfo(String uuid,String mapKey);

    /**
     * 获取所有的核心 信息
     * @return
     */
    Map<Object,Object> getUserCoreInfo(String uuid);

    /**
     * 获取用户积分
     * @return
     */
    Long getUserIntegral(String uuid);

    /**
     * 获取用户商品冻结积分
     * @return
     */
    Long getUserDongjieIntegral(String uuid,String goodsId);

    /**
     * 获取用户信息
     * @return
     */
    LoginUserVO getUserInfo();

    /**
     * 增加用户的积分
     * @param integral
     * @return
     */
    Integer addIntegral(Integer integral,String uuid);

    /**
     * 生成h5的唯一密钥
     * @return
     */
    String getH5Code();
}
